Device-to-device (D2D) communication among mobile users is expected to play a key role in next generation wireless communication systems. The D2D communication functionality can enable various applications and services, such as proximity-based applications involving discovering and communicating with nearby devices (e.g., Internet of Things). Such functionality can also enable higher data rates and system capacity by leveraging the underlying peer-to-peer wireless network that can be created via local communication among the users. Moreover, incorporating caching capability into D2D communication networks have been shown to significantly enhance the system throughput for applications that follow a popularity pattern, such as the on-demand video traffic for which a few dominant videos account for a large part of the traffic.